#ifndef __UDF_H
#define __UDF_H

#include "udf_cfg.h"
#include "udf_def_auto.h"

#if ( UDF_EN_01 > 0 )
#include "udf01.h"
#endif
#if ( UDF_EN_02 > 0 )
#include "udf02.h"
#endif
#if ( UDF_EN_03 > 0 )
#include "udf03.h"
#endif
#if ( UDF_EN_04 > 0 )
#include "udf04.h"
#endif
#if ( UDF_EN_05 > 0 )
#include "udf05.h"
#endif
#if ( UDF_EN_06 > 0 )
#include "udf06.h"
#endif
#if ( UDF_EN_07 > 0 )
#include "udf07.h"
#endif
#if ( UDF_EN_08 > 0 )
#include "udf08.h"
#endif
#if ( UDF_EN_09 > 0 )
#include "udf09.h"
#endif
#if ( UDF_EN_10 > 0 )
#include "udf10.h"
#endif
#if ( UDF_EN_11 > 0 )
#include "udf11.h"
#endif
#if ( UDF_EN_12 > 0 )
#include "udf12.h"
#endif
#if ( UDF_EN_13 > 0 )
#include "udf13.h"
#endif
#if ( UDF_EN_14 > 0 )
#include "udf14.h"
#endif
#if ( UDF_EN_15 > 0 )
#include "udf15.h"
#endif
#if ( UDF_EN_16 > 0 )
#include "udf16.h"
#endif

extern uint16_t udf_crc_table[UDF_MAX_NUM];
void UDF_CRC_gene_code_Handle(void);


#if (UDF_EN_01 < 1) || defined(UDF_SUB_PROJECT)
#define UDF01_LEN (0)
#define UDF01_CRC (0)
extern const sUDF_Info_t udf01_udf_info;
extern void udf01_udf_handle(void);
#else
#include "udf01_def_auto.h"
#endif

#if (UDF_EN_02 < 1) || defined(UDF_SUB_PROJECT)
#define UDF02_LEN (0)
#define UDF02_CRC (0)
extern const sUDF_Info_t udf02_udf_info;
extern void udf02_udf_handle(void);
#else
#include "udf02_def_auto.h"
#endif

#if (UDF_EN_03 < 1) || defined(UDF_SUB_PROJECT)
#define UDF03_LEN (0)
#define UDF03_CRC (0)
extern const sUDF_Info_t udf03_udf_info;
extern void udf03_udf_handle(void);
#else
#include "udf03_def_auto.h"
#endif

#if (UDF_EN_04 < 1) || defined(UDF_SUB_PROJECT)
#define UDF04_LEN (0)
#define UDF04_CRC (0)
extern const sUDF_Info_t udf04_udf_info;
extern void udf04_udf_handle(void);
#else
#include "udf04_def_auto.h"
#endif

#if (UDF_EN_05 < 1) || defined(UDF_SUB_PROJECT)
#define UDF05_LEN (0)
#define UDF05_CRC (0)
extern const sUDF_Info_t udf05_udf_info;
extern void udf05_udf_handle(void);
#else
#include "udf05_def_auto.h"
#endif

#if (UDF_EN_06 < 1) || defined(UDF_SUB_PROJECT)
#define UDF06_LEN (0)
#define UDF06_CRC (0)
extern const sUDF_Info_t udf06_udf_info;
extern void udf06_udf_handle(void);
#else
#include "udf06_def_auto.h"
#endif

#if (UDF_EN_07 < 1) || defined(UDF_SUB_PROJECT)
#define UDF07_LEN (0)
#define UDF07_CRC (0)
extern const sUDF_Info_t udf07_udf_info;
extern void udf07_udf_handle(void);
#else
#include "udf07_def_auto.h"
#endif

#if (UDF_EN_08 < 1) || defined(UDF_SUB_PROJECT)
#define UDF08_LEN (0)
#define UDF08_CRC (0)
extern const sUDF_Info_t udf08_udf_info;
extern void udf08_udf_handle(void);
#else
#include "udf08_def_auto.h"
#endif

#if (UDF_EN_09 < 1) || defined(UDF_SUB_PROJECT)
#define UDF09_LEN (0)
#define UDF09_CRC (0)
extern const sUDF_Info_t udf09_udf_info;
extern void udf09_udf_handle(void);
#else
#include "udf09_def_auto.h"
#endif

#if (UDF_EN_10 < 1) || defined(UDF_SUB_PROJECT)
#define UDF10_LEN (0)
#define UDF10_CRC (0)
extern const sUDF_Info_t udf10_udf_info;
extern void udf10_udf_handle(void);
#else
#include "udf10_def_auto.h"
#endif

#if (UDF_EN_11 < 1) || defined(UDF_SUB_PROJECT)
#define UDF11_LEN (0)
#define UDF11_CRC (0)
extern const sUDF_Info_t udf11_udf_info;
extern void udf11_udf_handle(void);
#else
#include "udf11_def_auto.h"
#endif

#if (UDF_EN_12 < 1) || defined(UDF_SUB_PROJECT)
#define UDF12_LEN (0)
#define UDF12_CRC (0)
extern const sUDF_Info_t udf12_udf_info;
extern void udf12_udf_handle(void);
#else
#include "udf12_def_auto.h"
#endif

#if (UDF_EN_13 < 1) || defined(UDF_SUB_PROJECT)
#define UDF13_LEN (0)
#define UDF13_CRC (0)
extern const sUDF_Info_t udf13_udf_info;
extern void udf13_udf_handle(void);
#else
#include "udf13_def_auto.h"
#endif

#if (UDF_EN_14 < 1) || defined(UDF_SUB_PROJECT)
#define UDF14_LEN (0)
#define UDF14_CRC (0)
extern const sUDF_Info_t udf14_udf_info;
extern void udf14_udf_handle(void);
#else
#include "udf14_def_auto.h"
#endif

#if (UDF_EN_15 < 1) || defined(UDF_SUB_PROJECT)
#define UDF15_LEN (0)
#define UDF15_CRC (0)
extern const sUDF_Info_t udf15_udf_info;
extern void udf15_udf_handle(void);
#else
#include "udf15_def_auto.h"
#endif

#if (UDF_EN_16 < 1) || defined(UDF_SUB_PROJECT)
#define UDF16_LEN (0)
#define UDF16_CRC (0)
extern const sUDF_Info_t udf16_udf_info;
extern void udf16_udf_handle(void);
#else
#include "udf16_def_auto.h"
#endif


#endif

